Embodiments of the disclosure relate to a decoding method, and more particularly, to a method of operating a decoder for counting the number of messages having a specific reliability and storing a count value to maintain error correction performance and reduce computational complexity and a method of operating a data storage device including the decoder.
In flash memory systems which use a low density parity check (LDPC) code as an error correction code, an LDPC decoder converts input data into a log-likelihood ratio (LLR) value and transmits the LLR value to a variable node. The LDPC decoder converts an LLR value of at least one variable node into a variable-to-check (V2C) message and transmits the V2C message to a check node. The check node generates a check-to-variable (C2V) message using the at least one V2C message and transmits the C2V message to a variable node.
The check node uses a min-sum algorithm to determine the magnitude of the C2V message. The min-sum algorithm uses “min1”, “min2”, and “min1_index” to calculate the magnitude of the C2V message. Here, “min1” denotes the most minimum value among V2C messages, “min2” denotes the second most minimum value among the V2C messages, and “min1_index” denotes an index of a variable node corresponding to “min1”. Each of the minimum values min1 and min2 has the same number of bits as the absolute value of a message and the index min1_index is determined only by an H-matrix (code design) of the LDPC decoder regardless of the precision of the message.